package com.project.mapper;

import com.project.bean.ProductBean;
import org.apache.ibatis.annotations.*;

import java.time.LocalDate;
import java.util.List;

/**
 * 商品表业务成接口
 */
public interface IProductMapper {


    /**
     * 按id查找商品信息，同时查找商品售出数量
     * @param id
     * @return
     */
    @Select(" SELECT p.*,SUM(l_InfoNum) number FROM t_product p  LEFT JOIN t_info l ON p.`pk_productId`=l.`fk_productId`  WHERE p.`pk_productId`=#{id}")
    @ResultMap("productMap")
    public ProductBean findById(int id);


    /**
     * 动态条件查询商品信息，需要联表，明细表，用sum统计，统计商品的选购数量
     * @param name          商品名
     * @param startDate     生产开始日期
     * @param endDate       生产结束日期
     * @return  分页对象
     */
    public List<ProductBean> findByItem(@Param("name") String name,@Param("startDate") LocalDate startDate,@Param("endDate") LocalDate endDate,@Param("status")String status);


    /**
     * 商品上架，同时完成图片的上传
     * @param product
     */
    @Insert("INSERT INTO t_product(p_name,p_price,p_origin, p_createDate,p_imgPath,p_productStatus)VALUES(#{name},#{price},#{origin},#{date},#{imgPath},#{productStatus})")
    public void add(ProductBean product);

    /**
     * 修改状态，将上架商品修改为下架商品
     * @param id
     * @param productStatus
     */
    @Update("update t_product set p_productStatus=#{productStatus} where pk_productId=#{id} ")
    public void updateStatus(@Param("id") int id,@Param("productStatus") String productStatus);


    @Update("update t_product set p_price=#{price} where pk_productId=#{id}")
    public void updatePrice(@Param("id") int id,@Param("price") int price);
}
